#pragma once

#include <vector>
#include "DirectX\Device.h"
#include "DirectX\Text.h"

namespace Graphics
{
	class Text;
}

enum ScreenElement
{
	NAME_ELEMENT,
	FPS_ELEMENT,
	TIME_ELEMENT,
	CPU_ELEMENT,
	MEMORY_ELEMENT,
	MAX_ELEMENT
};

namespace System
{
struct ScreenObject
{
	ScreenObject(){}
	int ScreenID;
	Graphics::Text text;
};

class Win32DebugDisplay
{
	typedef std::vector<ScreenObject*> SceenObjects;
public:
	Win32DebugDisplay(void);
	virtual ~Win32DebugDisplay(void);
	bool Initialize(D3DXMATRIX baseMatrix);
	void Update(float gameTime);
	void Render();
	void SetDebugText(int element, int x_pos, int y_pos, const char* format, ... );
	void ProcessInput();
private:
	bool mIsRendering;
	float XPosition, YPosition;
	SceenObjects mScreenObjects;
	int mCurrentEventIndex;
	D3DXMATRIX mBaseMatrix;
};
}